<?php

	class ExtendedArticleHandler extends ArticleHandler {

		/**
		 * Kigenerálja a cikk html kódját. A generálás egy sablon alapján történik, melyet vagy az ARTICLE_TEMPLATE
		 * config konstans ad meg, vagy itt rögtön át lett adva.
		 *
		 * @param int $siteId melyik site alatti cikk?
		 * @param int $id a cikk id
		 * @param string $langcode nyelvkód
		 * @param HTML_Template_ITX $tpl ha null akkor az ARTICLE_TEMPLATE konstans alapján szedett template-tel dolgozik egyébként a megadottal
		 * @return a html forrás, vagy null ha nincs ilyen cikk, nem sikerült generálni
		 */
		public static function generateArticleHtml($siteId, $id, $langcode, $tpl = null, $properties = null)
		{
			$articleObj = Article::getArticle($id, $siteId, $langcode);
			if(!is_null($articleObj))
				$tpl = BaseSitePage::loadTemplateFile("article.tpl.html");
			

			// ha van auto menü, akkor generáljuk
			$menuItemHtmls = "";
			if($articleObj->autoMenu)
			{
				$menuItemHtmls = array();
				
				// miközben megyünk végig az eredeti body-n, kell egy újat csinálnunk, hisz minden
				// <h2> cuccost közben anchoroznunk kell...
				
				$anchorIndex = 0;
				$newBody = "";
				$body = $articleObj->getBody($langcode);
				$bodyLen = strlen($body);
				$h1Stop = 0;
				$h1Start = strpos($body, "<h2>", 0);
				while($h1Start !== false)
				{
					$newBody .= substr($body, $h1Stop, $h1Start-$h1Stop);
					$newBody .= "<h2>";
					
					$h1Start += 4;
					$h1Stop = strpos($body, "</h2>", $h1Start);
					if($h1Stop === false)
						$h1Stop = $bodyLen - 1;
					
					$h1Text = substr($body, $h1Start, $h1Stop-$h1Start);
					$newBody .= "<a name=\"a$anchorIndex\"></a>".$h1Text . "</h2>";

					$h1Stop += 5;
					
					$hTpl = BaseSitePage::loadTemplateFile("article_inlinemenu_item.tpl.html");
					$labelText = TextUtil::removeHTMLTags($h1Text);
					$hTpl->setVariable('label', $labelText);
					$hTpl->setVariable('href', "#a$anchorIndex");
					array_push($menuItemHtmls, $hTpl->get());
					
					$h1Start = strpos($body, "<h2>", $h1Stop);
					$anchorIndex++;
				}
				if($h1Stop < $bodyLen)
					$newBody .= substr($body, $h1Stop, $bodyLen-$h1Stop);
					
				$articleLangObj = $articleObj->getArticleLanguageParts($langcode);
				$articleLangObj->body = $newBody;
				
				$menuItemHtmls = implode("", $menuItemHtmls);
			}
			
			if(!is_null($tpl)) {
				if(empty($menuItemHtmls))
				{
					$tpl->replaceBlock("inlineMenu", " ", false);
					$tpl->touchBlock("inlineMenu");
				}
				else
				{
					$tpl->setVariable('inlineMenuHtml', $menuItemHtmls);
				}
			}
			$t = parent::generateArticleHtml($siteId, $id, $langcode, $tpl, $properties);
			return $t;
			//return parent::generateArticleHtml($siteId, $id, $langcode, $tpl);
		}
	}
?>